// Ressort double - Version 1.3

// Ce script relie les calques 1 et 2 par un ressort.
// Chacun des calques conserve la vitesse qu'il possédait
// au début de la zone de travail.

//      CALQUE                                    PROPRIETE                  DIMENSION
//      -------                                    ----------                  ---------- 
// 1: Premier calque                         indifférent                   indifférent
// 2: Second calque                           indifférent                   indifférent

if (time() == start_time) {
	rest_length = 50;				     	// Longueur du ressort au repos, en pixels
   damp = 0.95;										// Frottements (0 = infinis, 1 = nuls)

	p1 = value(pop_layer(1), position);
	p2 = value(pop_layer(2), position);

	last_p1 = tmap(time() - step_time, value(pop_layer(1), position));
	last_p2 = tmap(time() - step_time, value(pop_layer(2), position)); 

	v1 = (p1 - last_p1);
	v2 = (p2 - last_p2);
} else {
	delta = p2 - p1;
	n_delta = normalize(delta);

	a = n_delta * (length(delta) - rest_length) * step_time;

	v2 = (v2 - a) * damp;
	v1 = (v1 + a) * damp;

	p1 = p1 + v1;
	p2 = p2 + v2;
}
value(pop_layer(1), position) = p1;
value(pop_layer(2), position) = p2;

